#include "mondialogueredimensionnement.h"
#include "ui_mondialogueredimensionnement.h"
#include "actionimage.h"

MonDialogueRedimensionnement::MonDialogueRedimensionnement(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MonDialogueRedimensionnement)
{
    ui->setupUi(this);

    // affichage de l'image
    FenetreImage *fenetre = ((ActionImage *)this->parent())->getFenetreImageCourante();
    QSize size(100, 100);

    this->image     = fenetre->getCalqueCourant()->scaled(size, Qt::KeepAspectRatio);
    this->pixmap    = QPixmap::fromImage(image);

    this->label = new QLabel(this);
    this->label->setPixmap(pixmap);
    this->label->move(5, 5);

    QObject::connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(majLargeur(int)));
    QObject::connect(ui->verticalSlider, SIGNAL(valueChanged(int)), this, SLOT(majHauteur(int)));
}

MonDialogueRedimensionnement::~MonDialogueRedimensionnement()
{
    delete ui;
    delete label;
}


int MonDialogueRedimensionnement::getPourcentageLargeur(){
    return this->ui->spinBox->value();
}

int MonDialogueRedimensionnement::getPourcentageHauteur(){
    return this->ui->spinBox_2->value();
}

void MonDialogueRedimensionnement::majAffichage(){
    FenetreImage *fenetre = ((ActionImage *)this->parent())->getFenetreImageCourante();
    if(fenetre == NULL){ return; }

    int largeur, hauteur;

    if(fenetre->getCalqueCourant()->width() > fenetre->getCalqueCourant()->height()){
        largeur = this->getPourcentageLargeur();
        hauteur = this->getPourcentageHauteur()*(100*fenetre->getCalqueCourant()->height()/fenetre->getCalqueCourant()->width()) /100;
    }else{
        hauteur = this->getPourcentageHauteur();
        largeur = this->getPourcentageLargeur()*(100*fenetre->getCalqueCourant()->width()/fenetre->getCalqueCourant()->height()) /100;
    }
    QSize size(largeur, hauteur);

    this->image     = fenetre->getCalqueCourant()->scaled(size);
    this->pixmap    = QPixmap::fromImage(image);

    this->label->setPixmap(pixmap);
    this->label->setFixedSize(largeur, hauteur);
}


/*********** SLOTS ***********/

void MonDialogueRedimensionnement::majLargeur(int pourcentage){
    this->ui->spinBox->setValue(pourcentage);
    this->majAffichage();
}

void MonDialogueRedimensionnement::majHauteur(int pourcentage){
    this->ui->spinBox_2->setValue(pourcentage);
    this->majAffichage();
}
